Integrated circuits are formed of many circuit elements, commonly referred to for placement as resources, cells, components, logic blocks and the like. In other words, components for an integrated design are placed relative to one another in what is known as a placement process. Data input to a conventional placer tool includes associations between components, such as connectivity data. A signal path may comprise multiple connections as three or more components or resources may be used to create a signal path. Multiple signal paths form a network of components, and that signal paths have associated target delays. After placement and routing of components, a conventional placement optimizer was used to improve placement to facilitate operating an integrating circuit at an increasingly higher clock frequency.
Conventional placement optimizers or optimizations are component or logic block based. Such conventional optimizers pick up components from an existing placement and attempt to find a better location or site to place such components of an integrated circuit. If a component site under consideration is empty, a proposed or tentative component placement may be used to evaluate for improvement in path or connection. If, however, a proposed site is presently occupied by another component, component locations are temporarily swapped to evaluate whether a connection or path delay improves. Evaluation of whether or not improvement results from moving a component to an open site or swapping components is done with a placement cost function. A placement cost function responsive to a tentative relocation of the component or swap of components is evaluated to estimate effect of such a proposed repositioning in order to select a best resulting cost, such as a lower delay time, a smaller die size, fewer connections, and the like.
Due to the number of components forming an integrated circuit, especially a complex integrated circuit, it is impractical for purposes of runtime reasons to attempt to evaluate repositioning of all possible component relocations. As not all possible relocations are attempted, optimizer quality depends on which components are tried and how tried sites for such components to be placed or relocated are selected. Conventional optimizers select sites within a small window centered about a current component position under consideration for repositioning. By limiting relocation of a component to within a window centered about such a component, runtime is reduced for purposes of optimization. However, a limited window also limits distance by which a component may be repositioned, and thus limits the degree of improvement one may obtain by optimization should a better solution be found outside such a window.
Accordingly, it would be both desirable and useful to provide optimization means that allows more room for improvement than that previously afforded by prior optimizers but which has negligible impact on runtime as compared with runtime of such prior optimization means.